Set user_time from startup_id if window realized
authorAlexander Larsson <alexl@redhat.com>
Tue, 7 Apr 2009 13:39:00 +0000 (15:39 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 7 Apr 2009 13:39:00 +0000 (15:39 +0200)
For non-realized windows we set the user_time from the startup id on
realization. However, if the window is already realized when the
startup_id is not set we currently don't, but we should. (#573922)

gtk/gtkwindow.c

index 4bbd53e0cea3a819d0f84c53f10d1b9f48523b96..1238c2295c53dc7a97e78e282522b68b5fa7de0a 100644 (file)
@@ -1500,18 +1500,21 @@ gtk_window_set_startup_id (GtkWindow   *window,
   
   g_free (priv->startup_id);
   priv->startup_id = g_strdup (startup_id);
-  
+
   if (GTK_WIDGET_REALIZED (window))
     {
+      guint32 timestamp = extract_time_from_startup_id (priv->startup_id);
+
+#ifdef GDK_WINDOWING_X11
+      if (timestamp != GDK_CURRENT_TIME)
+       gdk_x11_window_set_user_time (GTK_WIDGET (window)->window, timestamp);
+#endif
+
       /* Here we differentiate real and "fake" startup notification IDs,
        * constructed on purpose just to pass interaction timestamp
-       */  
+       */
       if (startup_id_is_fake (priv->startup_id))
-        {
-          guint32 timestamp = extract_time_from_startup_id (priv->startup_id);
-
-          gtk_window_present_with_time (window, timestamp);
-        }
+       gtk_window_present_with_time (window, timestamp);
       else 
         {
           gdk_window_set_startup_id (GTK_WIDGET (window)->window,